home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dr. Windows 3
/
dr win3.zip
/
dr win3
/
WINPROGS
/
WDASM17B.ZIP
/
HELLOHIL.ASM
< prev
next >
Wrap
Assembly Source File
|
1993-04-02
|
22KB
|
1,112 lines
; HiLevel Syntax Generator Version 2.01
; Source file: c:\wdasm\hello1.asm
TITLE WDASM Example Program
.286
.MODEL SMALL
OPTION NOM510
OPTION CASEMAP:NONE
OPTION PROLOGUE:hPrologue
OPTION EPILOGUE:hEpilogue
INCLUDE HILEVEL.INC
INCLUDE HELLO2.INC
EXTERN DefWindowProc:FAR
EXTERN GetMessage:FAR
EXTERN TranslateMessage:FAR
EXTERN FatalExit:FAR
EXTERN DispatchMessage:FAR
EXTERN GetVersion:FAR
EXTERN GetDosEnvironment:FAR
EXTERN LocalAlloc:FAR
EXTERN LocalRealloc:FAR
EXTERN LocalFree:FAR
EXTERN FatalAppExit:FAR
EXTERN LocalSize:FAR
EXTERN UpdateWindow:FAR
EXTERN GlobalRealloc:FAR
EXTERN GlobalSize:FAR
EXTERN InitApp:FAR
EXTERN PostQuitMessage:FAR
EXTERN LockSegment:FAR
EXTERN UnlockSegment:FAR
EXTERN WaitEvent:FAR
EXTERN GetClientRect:FAR
EXTERN GetModuleFileName:FAR
EXTERN BeginPaint:FAR
EXTERN EndPaint:FAR
EXTERN CreateWindow:FAR
EXTERN ShowWindow:FAR
EXTERN LoadCursor:FAR
EXTERN LoadIcon:FAR
EXTERN RegisterClass:FAR
EXTERN InitTask:FAR
EXTERN GetStockObject:FAR
EXTERN DrawText:FAR
EXTERN Dos3Call:FAR
EXTERN __winflags:FAR
.CODE
Proc0000Seg1 PROC NEAR C
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
Proc0000Seg1 ENDP
Proc0010Seg1 PROC NEAR PASCAL <NOLOADDS, NOINCBP, FORCEFRAME, CHECKSTACK>, par12:WORD, par10:WORD, par8:WORD, par6:WORD, par4:WORD
LOCAL local2:WORD, local4:WORD, local6:WORD, \
local8:WORD, local10:WORD, local12:WORD, local14:WORD, \
local16:WORD, local18:WORD, local20:WORD, local22:WORD, \
local24:WORD, local26:WORD, local28:WORD, local30:WORD, \
local32:WORD, local34:WORD, local36:WORD, local38:WORD, \
local40:WORD, local42:WORD, local44:WORD, local46:WORD
.IF (WORD PTR par10 == 0)
L0022H: MOV WORD PTR local46, 0003H
MOV WORD PTR local44, LROFFSET WNDPROC
MOV WORD PTR local42, SEG WNDPROC
MOV WORD PTR local40, 0000H
MOV WORD PTR local38, 0000H
MOV AX, WORD PTR par12
MOV WORD PTR local36, AX
hCall <FAR PTR LoadIcon, 0, 0, 7F00H>
MOV WORD PTR local34, AX
hCall <FAR PTR LoadCursor, 0, 0, 7F00H>
MOV WORD PTR local32, AX
hCall <FAR PTR GetStockObject, 0>
MOV WORD PTR local30, AX
MOV WORD PTR local28, 0000H
MOV WORD PTR local26, 0000H
MOV AX, 0010H
MOV DX, DS
MOV WORD PTR local24, AX
MOV WORD PTR local22, DX
LEA AX, WORD PTR local46
MOV DX, SS
hCall <FAR PTR RegisterClass, DX, AX>
.ENDIF
L008AH: MOV AX, 0010H
MOV DX, DS
PUSH DX
PUSH AX
MOV AX, 00C2H
MOV DX, DS
hCall <FAR PTR CreateWindow, DX, AX, 00CFH, 0, 8000H, 8000H, 8000H, 8000H, 0, 0, WORD PTR par12, 0, 0>
MOV WORD PTR local2, AX
hCall <FAR PTR ShowWindow, AX, WORD PTR par4>
hCall <FAR PTR UpdateWindow, WORD PTR local2>
L00CDH: LEA AX, WORD PTR local20
MOV DX, SS
hCall <FAR PTR GetMessage, DX, AX, 0, 0, 0>
.IF (AX)
LEA AX, WORD PTR local20
MOV DX, SS
hCall <FAR PTR TranslateMessage, DX, AX>
LEA AX, WORD PTR local20
MOV DX, SS
hCall <FAR PTR DispatchMessage, DX, AX>
JMP SHORT L00CDH
NOP
.ENDIF
L00FEH: MOV AX, WORD PTR local16
RET
Proc0010Seg1 ENDP
Proc0105Seg1 PROC NEAR C
NOP
Proc0105Seg1 ENDP
WNDPROC PROC FAR PASCAL PUBLIC <LOADDS, INCBP, FORCEFRAME, CHECKSTACK>, par14:WORD, par12:WORD, par10:WORD, par8:WORD, par6:WORD
LOCAL local2:WORD, local4:WORD, local6:WORD, \
local8:WORD, local10:WORD, local12:WORD, local14:WORD, \
local16:WORD, local18:WORD, local20:WORD, local22:WORD, \
local24:WORD, local26:WORD, local28:WORD, local30:WORD, \
local32:WORD, local34:WORD, local36:WORD, local38:WORD, \
local40:WORD, local42:WORD, local44:WORD
PUSH SI
PUSH DI
MOV SI, WORD PTR par14
MOV AX, WORD PTR par12
JMP NEAR PTR L017AH
NOP
L0122H: PUSH SI
LEA AX, WORD PTR local36
MOV DX, SS
hCall <FAR PTR BeginPaint, DX, AX>
MOV DI, AX
PUSH SI
LEA AX, WORD PTR local44
MOV DX, SS
hCall <FAR PTR GetClientRect, DX, AX>
PUSH DI
MOV AX, 00DFH
MOV DX, DS
PUSH DX
PUSH AX
PUSH -1
LEA AX, WORD PTR local44
MOV DX, SS
hCall <FAR PTR DrawText, DX, AX, 37>
PUSH SI
LEA AX, WORD PTR local36
MOV DX, SS
hCall <FAR PTR EndPaint, DX, AX>
XOR AX, AX
XOR DX, DX
JMP SHORT L019FH
NOP
L016AH: hCall <FAR PTR PostQuitMessage, 0>
XOR AX, AX
XOR DX, DX
JMP SHORT L019FH
NOP
JMP SHORT L0187H
L017AH: CMP AX, 0002H
JZ L016AH
.IF (AX == 000FH)
JMP NEAR PTR L0122H
.ENDIF
L0187H: hCall <FAR PTR DefWindowProc, SI, WORD PTR par12, WORD PTR par10, WORD PTR par8, WORD PTR par6>
JMP SHORT L019FH
NOP
MOV WORD PTR par14, SI
L019FH: POP DI
POP SI
RET
WNDPROC ENDP
L01ACH DW LROFFSET __winflags
Proc01ACSeg1 PROC NEAR C
L01AEH: MOV AL, -1
hCall <NEAR PTR Proc034ESeg1, AX>
L01B4H:: XOR BP, BP
hCall <FAR PTR InitTask, BP>
OR AX, AX
JZ L01AEH
MOV WORD PTR D0064H, ES
ADD CX, 0100H
JB L01AEH
MOV WORD PTR D002EH, CX
MOV WORD PTR D0030H, SI
MOV WORD PTR D0032H, DI
MOV WORD PTR D0034H, BX
MOV WORD PTR D0036H, ES
MOV WORD PTR D0038H, DX
CALL FAR PTR GetVersion
MOV WORD PTR D0066H, AX
MOV AH, 48
.IF (WORD PTR CS:L01ACH & SWORD PTR 0001H)
CALL FAR PTR Dos3Call
JMP SHORT L01FEH
.ENDIF
L01FCH: INT 0021H
L01FEH: MOV WORD PTR D0068H, AX
.IF ( !(WORD PTR CS:L01ACH & 0001H))
MOV AL, 0
MOV BYTE PTR D006BH, AL
.ENDIF
L020FH: XOR AX, AX
hCall <FAR PTR WaitEvent, AX>
hCall <FAR PTR InitApp, WORD PTR D0032H>
OR AX, AX
JZ L01AEH
CALL NEAR PTR Proc0268Seg1
CALL NEAR PTR Proc047ESeg1
CALL NEAR PTR Proc05FCSeg1
CALL NEAR PTR Proc085CSeg1
hCall <NEAR PTR Proc024CSeg1, WORD PTR D00A0H, WORD PTR D009EH, WORD PTR D009CH>
ADD SP, 6
hCall <NEAR PTR Proc0347Seg1, AX>
MOV AX, 0015H
JMP NEAR PTR L0683H
Proc01ACSeg1 ENDP
; Missing MOV SP,BP and POP BP in epilogue.
Proc024CSeg1 PROC NEAR C
PUSH BP
MOV BP, SP
hCall <NEAR PTR Proc0010Seg1, WORD PTR D0032H, WORD PTR D0030H, WORD PTR D0036H, WORD PTR D0034H, WORD PTR D0038H>
POP BP
RET
Proc024CSeg1 ENDP
Proc0268Seg1 PROC NEAR C
MOV AX, 3500H
.IF (WORD PTR CS:L01ACH & SWORD PTR 0001H)
CALL FAR PTR Dos3Call
JMP SHORT L027DH
.ENDIF
L027BH: INT 0021H
L027DH: MOV WORD PTR D0050H, BX
MOV WORD PTR D0052H, ES
PUSH CS
POP DS
MOV AX, 2500H
MOV DX, 067EH
.IF (WORD PTR CS:L01ACH & SWORD PTR 0001H)
CALL FAR PTR Dos3Call
JMP SHORT L029FH
.ENDIF
L029DH: INT 0021H
L029FH: PUSH SS
POP DS
MOV CX, WORD PTR D00B8H
JCXZ L02D0H
MOV ES, WORD PTR D0064H
MOV SI, WORD PTR ES:D002CH
MOV AX, WORD PTR D00BAH
MOV DX, WORD PTR D00BCH
XOR BX, BX
CALL DWORD PTR D00B6H
JAE L02C2H
JMP NEAR PTR L0424H
L02C2H: MOV AX, WORD PTR D00BEH
MOV DX, WORD PTR D00C0H
MOV BX, 0003H
CALL DWORD PTR D00B6H
L02D0H: MOV ES, WORD PTR D0064H
MOV CX, WORD PTR ES:D002CH
JCXZ L0319H
MOV ES, CX
XOR DI, DI
L02DFH: .IF (BYTE PTR ES:[DI] != 0)
MOV CX, 000DH
MOV SI, 0042H
REPE CMPSB
JZ L02FAH
MOV CX, 7FFFH
XOR AX, AX
REPNE SCASB
JNZ L0319H
JMP SHORT L02DFH
L02FAH: PUSH ES
PUSH DS
POP ES
POP DS
MOV SI, DI
MOV DI, 0074H
MOV CL, 4
L0305H: LODSB
SUB AL, 65
JB L0317H
SHL AL, CL
XCHG DX, AX
LODSB
SUB AL, 65
JB L0317H
OR AL, DL
STOSB
JMP SHORT L0305H
L0317H: PUSH SS
POP DS
.ENDIF
L0319H: MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03FASeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03FASeg1
RET
Proc0268Seg1 ENDP
; Missing MOV SP,BP and POP BP in epilogue.
Proc0347S